package xyz.icxl.android.architecture.helper

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.blankj.utilcode.util.StringUtils
import xyz.icxl.android.architecture.R
import xyz.icxl.kotlion.ext.binding.load

/**
 * 文件描述：缺省页
 *
 * 文件创建人：cxl
 *
 * 创建时间：2021 年 12月 01 日
 *
 * 文件版本：v1.0
 *
 * 版本描述：创建文件
 */
object EmptyPageHelper {

    /**
     * 创建数据为空
     *
     * @param context Context
     * @param root    父布局
     * @return View
     */
    fun createDataEmpty(context: Context?, root: ViewGroup, msg: CharSequence? = null): View {
        return LayoutInflater.from(context).inflate(R.layout.module_page_pro_no_data, root, false)
            .apply {
                if (msg != null)
                    findViewById<TextView>(R.id.msg_tv).text = msg
            }
    }


    /**
     * 创建加载中
     *
     * @param context Context
     * @param root    父布局
     * @return View
     */
    fun createLoading(context: Context?, root: ViewGroup,msg:CharSequence = "···"): View {
        return LayoutInflater.from(context).inflate(R.layout.module_page_pro_loading, root, false).apply {
            findViewById<TextView>(R.id.msg_tv).text = msg
        }
    }


    /**
     * 创建网络异常
     *
     * @param context Context
     * @param root    父布局
     * @param msg 异常提示
     * @param listener 点击重试的监听 为NULL时不显示重试按钮
     * @return View
     */
    fun createNetworkAnomaly(
        context: Context?,
        root: ViewGroup,
        msg: CharSequence,
        listener: View.OnClickListener?
    ): View {
        val view: View = LayoutInflater.from(context)
            .inflate(R.layout.module_page_pro_network_issues, root, false)
        view.findViewById<ImageView>(R.id.image_iv).load(R.mipmap.ic_network)
        if (listener != null) {
            view.findViewById<View>(R.id.re_try).setOnClickListener(listener)
        } else {
            view.findViewById<View>(R.id.re_try).visibility = View.GONE
        }
        if (!StringUtils.isEmpty(msg))
            view.findViewById<TextView>(R.id.tips_tv).text = msg
        return view
    }
}